package com;


import com.dto.UserDto;

import java.util.Optional;

/**
 * @author :Administrator
 * @description: TODO edit class Description
 * @create date: 2022/3/24 15:03
 */
public class OptionalTest {
    public static void main(String[] args) {
        Integer a=null;
        Integer b=1;
        //System.out.println(Optional.of(a)); // of 只能对非空对象进行判断，这里结果报异常

        System.out.println(Optional.ofNullable(a).orElse(2));  //如果a不为空，返回a 否则返回2
        System.out.println(Optional.ofNullable(b).orElse(2));   // 结果1

        UserDto user=null;
        UserDto user1=new UserDto();
        System.out.println(Optional.ofNullable(user).orElse(new UserDto()));   // 如果user不为空，返回user 否则返回2
        System.out.println(Optional.ofNullable(user).orElseGet(() ->new UserDto() ));   // 结果 给空对象赋值

        //  场景1 判断是否符合某个条件
        UserDto userDto=new UserDto();
        if (null!=userDto){
            if ("tom".equals(userDto.getName())){
                // 相等 逻辑1
            }else {
                // 不存在 逻辑2
            }
        }

        //替换方式
        boolean isExist=Optional.ofNullable(userDto).filter(userDto1 -> "tom".equals(userDto1.getName())).isPresent();

        // 如果 Optional 中有值,就可以对其进行骚操作，没有啥都不干
        Optional.ofNullable(userDto).ifPresent(userDto1 -> userDto1.setName("aaa"));
        System.out.println(userDto.getName());
    }
}
